package com.design.visitor.demo1;

interface Shape {
    void accept(Visitor visitor);
}

class Circle implements Shape {
    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }
    // 其他属性和方法...
}

class Rectangle implements Shape {
    @Override
    public void accept(Visitor visitor) {
        visitor.visit(this);
    }
    // 其他属性和方法...
}

interface Visitor {
    void visit(Circle circle);
    void visit(Rectangle rectangle);
}

class AreaVisitor implements Visitor {
    @Override
    public void visit(Circle circle) {
        // 计算圆的面积
    }

    @Override
    public void visit(Rectangle rectangle) {
        // 计算矩形的面积
    }
}

class PerimeterVisitor implements Visitor {
    @Override
    public void visit(Circle circle) {
        // 计算圆的周长
    }

    @Override
    public void visit(Rectangle rectangle) {
        // 计算矩形的周长
    }
}
